Problèmes de compilation par lots, de recompilation et de mise en cache des plans dans SQL Server 2005:
Le terme « détection de paramètres » désigne un processus par lequel l'environnement d'exécution de SQL Server « détecte » les valeurs de paramètres actuelles lors de la compilation ou de la recompilation et les transmet à l'optimiseur de requêtes afin qu'elles puissent être utilisées pour générer des plans d'exécution de requêtes potentiellement plus rapides. Le terme « actuel » fait référence aux valeurs de paramètres présentes dans l'appel d'instruction qui a provoqué une compilation ou une recompilation.
Cela revient à utiliser des « variables locales » dans vos requêtes de procédure stockée:
Solution lente:
CREATE PROCEDURE GetOrderForCustomers(@CustID varchar(20))
AS
BEGIN
SELECT *
FROM orders
WHERE customerid = @CustID
END
Solution rapide:
CREATE PROCEDURE GetOrderForCustomersWithoutPS(@CustID varchar(20))
AS
BEGIN
DECLARE @LocCustID varchar(20)
SET @LocCustID = @CustID
SELECT *
FROM orders
WHERE customerid = @LocCustID
END